.. _secSlv_OutPDO_GetBufPtr_A: secSlv_OutPDO_GetBufPtr_A ========================= ------------------------- SYNOPSYS ````````````` .. code-block:: none void* secSlv_OutPDO_GetBufPtr_A ( [in] t_i32 NetID, [in] t_ui16 SlaveIdx, [out] t_i32 ErrCode ) DESCRIPTION ````````````` - Output PDO 데이터를 직접 접근하여 해당 슬레이브의 Output PDO데이터가 존재하는 메모리 주소값(버퍼 포인터)을 반환합니다. PARAMETER ````````````` - NetID : 사용자가 사용 할 Network 번호 - SlaveIndex : 슬레이브 번호 (1 Base) - ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다. RETURN VALUE ````````````` - 해당 슬레이브의 Output PDO데이터가 존재하는 메모리 주소값(버퍼 포인터)을 반환합니다. Example `````````````` .. code-block:: c++ :linenos: :emphasize-lines: 10 // 슬레이브 인덱스가 1인 32채널 디지털출력 슬레이브 모듈이 있다고 가정합니다. // 해당 슬레이브는 32비트(4바이트)의 Output PDO 데이터를 제공하며 각각의 비트는 디지털출력 채널에 대응되는 상태값이라 가정합니다. // 이 때 해당 슬레이브의 Output PDO 버퍼를 직접 액세스해서 0 번 채널의 디지털 출력 값을 토글하는 예제입니다. #define NETID 0 #define SLAVE_ADDR 1 t_ui32 *pdwPtr; static t_bool outVal = 0; pdwPtr = secSlv_OutPDO_GetBufPtr_A(NETID, SLAVE_ADDR, 0, NULL); if(pdwPtr != NULL){ outVal = (outVal) ? 0: 1; // 출력 값 토글 *pdwPtr = (*pdwPtr & 0xfffffffe) | outVal; // 0번 비트 값을 outVal값으로 셋팅 // *pdwPtr의 값은 이더캣의 통신 사이클마다 해당 슬레이브에게 전달됨 } .. seealso:: :ref:`secSlv_OutPDO_GetBufLen_A`